#include "reporte.h"
#include <QFile>
#include <QCoreApplication>
#include <QTextStream>


Reporte::Reporte(int ced, int licencia, std::string nomb, int plac, std::string mod)
{
    Cedula=ced;
    Licencia = licencia;
    Nombre=nomb;
    Placa=plac;
    Modelo=mod;
    Partes =new Lista<unsigned int>();
    Total=0;
}

void Reporte::ReporteTxt()
{
    QString nombreArchivo;
    nombreArchivo.append(QString("%1").arg(getCedula()));  //que sea el numero de reporte
    QFile archivo(nombreArchivo+".txt");
    archivo.open(QIODevice::WriteOnly | QIODevice::Text);
    QTextStream out(&archivo);
    QString cedula;
    cedula.append(QString("%1").arg(getCedula()));
    out << "Cedula: " + cedula+"\n";
    QString licencia;
    licencia.append(QString("%1").arg(getLicencia()));
    out << "Licencia: " + licencia+"\n";
    QString nombre= QString::fromStdString(getNombre());
    out << "Nombre: " + nombre+"\n";
    QString placa;
    placa.append(QString("%1").arg(getPlaca())+"\n");
    out << "Placa: " + placa+"\n";
    QString modelo = QString::fromStdString(getModelo());
    out << "Modelo: " +modelo+"\n";
    out << "Partes: \n";

    QString prueba;
    prueba.append(QString("%1").arg(Partes->Largo()));
    out << prueba;
    out << "\n";
    for(int i =1; i<=Partes->Largo(); i++)
    {
       out << "Parte: ";
       out << (*Partes)[i]->getValor();
       out << " Monto: ";
       out << (*Partes)[i]->getContenedor();
       out << "\n";
    }


    QString partes = Partes->ToQString(); //creo que esta hay que adaptarlo para que imprima el parte Y el costo correspondiente
    out << partes;

    archivo.close();
}

void Reporte::AddParte(int num, unsigned int Monto)
{
    Partes->InsertarFinal(num,Monto);
    Total+=Monto;
}
Lista<unsigned int>* Reporte::GetPartes()
{
    return Partes;
}
int Reporte::getCedula()
{
    return Cedula;
}
int Reporte::getPlaca()
{
    return Placa;
}
int Reporte::getLicencia()
{
    return Licencia;
}
std::string Reporte::getNombre()
{
    return Nombre;
}
std::string Reporte::getModelo()
{
    return Modelo;
}
int Reporte::getTotal()
{
    return Total;
}
